/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modeles;

import java.util.ArrayList;
import java.util.Collection;

/**
 *
 * @author Franck
 */
public class Panier {
    
    Collection<Produit> produits = new ArrayList<Produit>();
    Collection<Integer> quantite = new ArrayList<Integer>();
    Collection<Float> prix = new ArrayList<Float>();
    private float prixTotalPanier;
    public Panier() {        
    }

    public void ajouterProduit(Produit produit, int quantite) {     
        if(produit == null || quantite < 0)
            return;
        float prixTotalLigne = produit.getPrix() * (float)quantite;
        ArrayList<Produit> temp = new ArrayList<Produit>(this.produits);
        ArrayList<Integer> temp2 = new ArrayList<Integer>(this.quantite);
        ArrayList<Float> temp3 = new ArrayList<Float>(this.prix);
        int temp4 = -1;
        if((temp4 = temp.indexOf(produit)) != -1){
            temp2.set(temp4, temp2.get(temp4) + quantite);
            temp3.set(temp4, temp3.get(temp4) + prixTotalLigne);
        }else{
            temp.add(produit);
            temp2.add(quantite);
            temp3.add(prixTotalLigne);
        }
        this.prixTotalPanier += prixTotalLigne;
        this.produits = temp;
        this.quantite = temp2;
        this.prix = temp3;
    }
    
    public void reduireQuantiteProduit(Produit produit, int quantite) {     
        if(produit == null || quantite < 0)
            return;
        ArrayList<Produit> temp = new ArrayList<Produit>(this.produits);
        ArrayList<Integer> temp2 = new ArrayList<Integer>(this.quantite);
        ArrayList<Float> temp3 = new ArrayList<Float>(this.prix);
        int temp4 = -1;
        if((temp4 = temp.indexOf(produit)) != -1){
            float prixTotalLigne = produit.getPrix() * (float)quantite;
            if(temp2.get(temp4)-quantite > 0){
                temp2.set(temp4, temp2.get(temp4) - quantite);
                temp3.set(temp4, temp3.get(temp4) - prixTotalLigne);
            }else{
                prixTotalLigne = produit.getPrix() * (float)temp2.get(temp4);
                temp.remove(produit);
                temp2.remove(temp4);
                temp3.remove(temp4);
            }
            this.prixTotalPanier -= prixTotalLigne;
            this.produits = temp;
            this.quantite = temp2;
            this.prix = temp3;
        }
    }
    
    public void supprimeProduit(Produit produit) {     
        if(produit == null)
            return;
        ArrayList<Produit> temp = new ArrayList<Produit>(this.produits);
        ArrayList<Integer> temp2 = new ArrayList<Integer>(this.quantite);
        ArrayList<Float> temp3 = new ArrayList<Float>(this.prix);
        int temp4 = -1;
        if((temp4 = temp.indexOf(produit)) != -1){
        this.prixTotalPanier -= (produit.getPrix() * (float)temp2.get(temp4));
        temp.remove(produit);
        temp2.remove(temp4);
        temp3.remove(temp4);
        this.produits = temp;
        this.quantite = temp2;
        this.prix = temp3;
        }
    }

    public Collection<Produit> getProduits() {
        return produits;
    }
    public boolean hasProduits() {
        if(produits.size() > 0)
            return true;
        else return false;
    }
    public int getQuantite(Produit produit) {
        ArrayList<Produit> temp = new ArrayList<Produit>(this.produits);
        ArrayList<Integer> temp2 = new ArrayList<Integer>(this.quantite);
        int temp3 = -1;
        if((temp3 = temp.indexOf(produit)) != -1){
            return temp2.get(temp3);
        }else{
            return 0;
        }
    }
    public float getPrix(Produit produit) {
        ArrayList<Produit> temp = new ArrayList<Produit>(this.produits);
        ArrayList<Float> temp2 = new ArrayList<Float>(this.prix);
        int temp3 = -1;
        if((temp3 = temp.indexOf(produit)) != -1){
            return temp2.get(temp3);
        }else{
            return 0;
        }
    }
    
    public float  getPrixTotalPanier() {        
        return prixTotalPanier;
    }
}
